package cn.com.scooper.pojo.qo;

import cn.com.scooper.aop.annotation.ValidAlarmGrade;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.Date;

/**
 * @author lijuntao
 * @version 1.0
 * @date 2023/11/10 13:35
 * 设备报警保存Qo
 */
@Data
public class MineDeviceAlarmSaveQo implements Serializable {
    private static final long serialVersionUID = -7785109422658211038L;

    /**
     * 有效标记(0:无效;1有效)
     */
    @NotNull(message = "有效标记不能为空")
    @Min(value = 0, message = "有效标记必须是(0:无效;1有效)")
    @Max(value = 1, message = "有效标记必须是(0:无效;1有效)")
    private Integer actived;

    /**
     * 对接系统的报警ID或编号
     */
    @NotBlank(message = "报警id不能为空")
    @Size(max = 128, message = "报警id超出最大长度:128")
    private String alarmId;

    /**
     * 报警设备id或编号
     */
    @NotBlank(message = "报警设备id或编号不能为空")
    @Size(message = "报警设备id或编号超出最大长度:128", max = 128)
    private String deviceId;

    /**
     * 报警等级(E3801:一级报警 E3802:二级报警  E3803:三级报警)
     */
    @NotBlank(message = "报警等级不能为空")
    @ValidAlarmGrade(message = "报警等级必须是(E3801:一级报警 E3802:二级报警  E3803:三级报警)")
    private String alarmGrade;

    /**
     * 创建时间
     */
    @NotNull(message = "创建时间不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 创建人
     */
    @NotBlank(message = "创建人不能为空")
    @Size(message = "创建人超出最大长度:32", max = 32)
    private String createUser;

    /**
     * 处置人名称
     */
    @Size(message = "处置人名称超出最大长度:32", max = 32)
    private String dealPsnName;

    /**
     * 处置时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dealTime;

    /**
     * 处置措施
     */
    @Size(message = "处置措施超出最大长度:255", max = 255)
    private String dealWay;

    /**
     * 是否已处置(0：未处置,1：已处置)
     */
    @NotNull(message = "处置状态不能为空")
    @Min(value = 0, message = "处置状态必须是(0：未处置,1：已处置)")
    @Max(value = 1, message = "处置状态必须是(0：未处置,1：已处置)")
    private Integer deaId;

    /**
     * 报警起始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "报警起始时间不能为空")
    private Date startAlarmTime;

    /**
     * 报警结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endAlarmTime;

    /**
     * 修改时间
     */
    @NotNull(message = "修改时间时间不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 修改人
     */
    @NotNull(message = "修改人不能为空")
    @Size(message = "修改人超出最大长度:32", max = 32)
    private String updateUser;

    /**
     * 报警原因
     */
    @Size(message = "报警原因超出最大长度:255", max = 255)
    private String warnReson;

    /**
     * 报警状态(0：未消警,1：已消警)
     */
    @NotNull(message = "报警状态不能为空")
    @Min(value = 0, message = "报警状态必须是(0：未消警,1：已消警)")
    @Max(value = 1, message = "报警状态必须是(0：未消警,1：已消警)")
    private Integer warnStatus;
}
